﻿#region License
/*
 * Microsoft Public License (Ms-PL)
 * 
 * This license governs use of the accompanying software. If you use the software, you accept this license. 
 * If you do not accept the license, do not use the software.
 *
 * 1. Definitions
 *
 * The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
 *
 * A "contribution" is the original software, or any additions or changes to the software.
 *
 * A "contributor" is any person that distributes its contribution under this license.
 *
 * "Licensed patents" are a contributor's patent claims that read directly on its contribution.
 *
 * 2. Grant of Rights
 *
 * (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, 
 * each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, 
 * prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
 *
 * (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, 
 * each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, 
 * use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the 
 * contribution in the software.
 *
 * 3. Conditions and Limitations
 *
 * (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
 *
 * (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, 
 * your patent license from such contributor to the software ends automatically.
 *
 * (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, 
 * and attribution notices that are present in the software.
 *
 * (D) If you distribute any portion of the software in source code form, you may do so only under this license by including 
 * a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, 
 * you may only do so under a license that complies with this license.
 *
 * (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. 
 * You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, 
 * the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement. 
 */
#endregion

#region Usings
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.IO;
#endregion

#region Namespace
namespace XMLSpriteSheets
{
    #region Class
    public class FileDecoder
    {
        #region Fields and Properties
        /// <summary>
        /// The form that called us
        /// </summary>
        mainFrm Display {get; set;}

        #endregion

        #region Constructor
        /// <summary>
        /// 
        /// </summary>
        /// <param name="frm"></param>
        public FileDecoder(mainFrm frm)
        {
            Display = frm;
        }
        #endregion

        #region Image Manipulation
        /// <summary>
        /// 
        /// </summary>
        public void OpenSpriteSheet()
        {
            Image img = Image.FromFile(Display.xmlSheet);
            Graphics g = Graphics.FromImage(img);
            // Send this shit to another form
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="type"></param>
        /// <param name="newfilename"></param>
        public void SaveAs(ImageFormat type, string newfilename)
        {
            // Load our Image thats in memory
            System.Drawing.Image image1 = System.Drawing.Image.FromFile(Display.xmlSheet);

            

            #region Save As Bmp
            if (type.Equals(ImageFormat.Bmp))
            {
                
                try
                {
                    // Save it as bmp
                    image1.Save(newfilename, System.Drawing.Imaging.ImageFormat.Bmp);
                    MessageBox.Show(
                        "File Saved as " + newfilename,
                        "File saved successfully",
                         MessageBoxButtons.OK,
                          MessageBoxIcon.Information);
                }
                catch (Exception e)
                {
                    MessageBox.Show(
                    e.ToString(),
                    "Unable to save file " + newfilename,
                     MessageBoxButtons.OK,
                      MessageBoxIcon.Stop);
                }
            }
                #endregion
            #region Save As Emf
            else if (type.Equals(ImageFormat.Emf))
            {
                
                try
                {
                    // Save it as emf
                    image1.Save(newfilename, System.Drawing.Imaging.ImageFormat.Emf);
                    MessageBox.Show(
                        "File Saved as " + newfilename,
                        "File saved successfully",
                         MessageBoxButtons.OK,
                          MessageBoxIcon.Information);
                }
                catch (Exception e)
                {
                    MessageBox.Show(
                    e.ToString(),
                    "Unable to save file " + newfilename,
                     MessageBoxButtons.OK,
                      MessageBoxIcon.Stop);
                }

            }
                #endregion
            #region Save As Exif
            else if (type.Equals(ImageFormat.Exif))
            {
                try
                {
                    // Save it as eixf
                    image1.Save(newfilename, System.Drawing.Imaging.ImageFormat.Exif);
                    MessageBox.Show(
                        "File Saved as " + newfilename,
                        "File saved successfully",
                         MessageBoxButtons.OK,
                          MessageBoxIcon.Information);
                }
                catch (Exception e)
                {
                    MessageBox.Show(
                    e.ToString(),
                    "Unable to save file " + newfilename,
                     MessageBoxButtons.OK,
                      MessageBoxIcon.Stop);
                }
            }
            #endregion
            #region Save As Gif
            else if (type.Equals(ImageFormat.Gif))
            {
                try
                {
                    // Save it as gif
                    image1.Save(newfilename, System.Drawing.Imaging.ImageFormat.Gif);
                    MessageBox.Show(
                        "File Saved as " + newfilename,
                        "File saved successfully",
                         MessageBoxButtons.OK,
                          MessageBoxIcon.Information);
                }
                catch (Exception e)
                {
                    MessageBox.Show(
                    e.ToString(),
                    "Unable to save file " + newfilename,
                     MessageBoxButtons.OK,
                      MessageBoxIcon.Stop);
                }
            }
            #endregion
            #region Save As Jpeg
            else if (type.Equals(ImageFormat.Jpeg))
            {
                try
                {
                    // Save it as jpeg
                    image1.Save(newfilename, System.Drawing.Imaging.ImageFormat.Jpeg);
                    MessageBox.Show(
                        "File Saved as " + newfilename,
                        "File saved successfully",
                         MessageBoxButtons.OK,
                          MessageBoxIcon.Information);
                }
                catch (Exception e)
                {
                    MessageBox.Show(
                    e.ToString(),
                    "Unable to save file " + newfilename,
                     MessageBoxButtons.OK,
                      MessageBoxIcon.Stop);
                }
            }
            #endregion
            #region Save As Png
            else if (type.Equals(ImageFormat.Png))
            {
                try
                {
                    // Save it as png
                    image1.Save(newfilename, System.Drawing.Imaging.ImageFormat.Png);
                    MessageBox.Show(
                        "File Saved as " + newfilename,
                        "File saved successfully",
                         MessageBoxButtons.OK,
                          MessageBoxIcon.Information);
                }
                catch (Exception e)
                {
                    MessageBox.Show(
                    e.ToString(),
                    "Unable to save file " + newfilename,
                     MessageBoxButtons.OK,
                      MessageBoxIcon.Stop);
                }
            }
            #endregion
            #region Save As Tiff
            else if (type.Equals(ImageFormat.Tiff))
            {
                try
                {
                    // Save it as tiff
                    image1.Save(newfilename, System.Drawing.Imaging.ImageFormat.Tiff);
                    MessageBox.Show(
                        "File Saved as " + newfilename,
                        "File saved successfully",
                         MessageBoxButtons.OK,
                          MessageBoxIcon.Information);
                }
                catch (Exception e)
                {
                    MessageBox.Show(
                    e.ToString(),
                    "Unable to save file " + newfilename,
                     MessageBoxButtons.OK,
                      MessageBoxIcon.Stop);
                }
            }
            #endregion
            #region Save As Wmf
            else if (type.Equals(ImageFormat.Wmf))
            {
                try
                {
                    // Save it as wmf
                    image1.Save(newfilename, System.Drawing.Imaging.ImageFormat.Wmf);
                    MessageBox.Show(
                        "File Saved as " + newfilename,
                        "File saved successfully",
                         MessageBoxButtons.OK,
                          MessageBoxIcon.Information);
                }
                catch (Exception e)
                {
                    MessageBox.Show(
                    e.ToString(),
                    "Unable to save file " + newfilename,
                     MessageBoxButtons.OK,
                      MessageBoxIcon.Stop);
                }
            }
            #endregion
            #region Save As Icon
            else if (type.Equals(ImageFormat.Icon)) // Eh probably cant do this with a sprite sheet like this
            {
                try
                {
                    // Save it as icon, yeah this probably aint gonna work
                    image1.Save(newfilename, System.Drawing.Imaging.ImageFormat.Icon);
                    MessageBox.Show(
                        "File Saved as " + newfilename,
                        "File saved successfully",
                         MessageBoxButtons.OK,
                          MessageBoxIcon.Information);
                }
                catch (Exception e)
                {
                    MessageBox.Show(
                    e.ToString(),
                    "Unable to save file " + newfilename,
                     MessageBoxButtons.OK,
                      MessageBoxIcon.Stop);
                }
            }
            #endregion
            #region Unsupported Type
            else // Unsupported type
            {
                MessageBox.Show("We cant save to that filetype.",
                            "Attempt to save as unsupported file!!",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Stop);
            }
            #endregion
        }
        #endregion 
    }
    #endregion Class
}
#endregion Namespace